前言
- 课程作者:https://github.com/mli
- 课程主页:https://courses.d2l.ai/zh-v2/
- 教材主页:https://zh-v2.d2l.ai/
- Jupiter笔记本:https://zh-v2.d2l.ai/d2l-zh.zip
03 安装【动手学深度学习v2】
安装步骤
# 安装依赖(python 3.8)
pip install jupyter d2l torch torchvision
# 下载课程记事本
wget https://zh-v2.d2l.ai/d2l-zh.zip
unzip ./d2l-zh.zip
# 启动 notebook
jupyter notebook
04 数据操作 + 数据预处理【动手学深度学习v2】
N 维数组
N 维数组是机器学习和神经网络的主要数据结构。
N 维数组 | 意义 | 样例 |
---|---|---|
0-d(标量) | 一个类别 | 1.0 |
1-d(向量) | 一个特征向量 | [1.0, 2.7, 3.4] |
2-d(矩阵) | 一个样本 or 一个特征矩阵 | [[1.0, 2.7, 3.4], [5.0, 0.2, 4.6], [4.3, 8.5, 0.2]] |
3-d | RGB图片(宽x高x通道) | [[[…]]] |
4-d | 一个RGB图片批量(batch) | [[[[…]]]] |
5-d | 一个视频批量(批量大小x时间x宽x高x通道) | [[[[[…]]]]] |
创建 N 维数组需要声明:
- 形状
- 数据类型
- 数据初始值(全0,随机数,正态值)
import torch
# 创建行向量。
x = torch.arange(12)
# 获取张量(沿每个轴的长度)的形状。
x.shape
# 获取张量中元素的总数。
x.numel()
# 改变一个张量的形状而不改变元素数量和元素值
# 我们可以用 x.reshape(-1,4) 或 x.reshape(3,-1) 来取代 x.reshape(3,4)
X = x.reshape(3, 4)
# 创建所有元素都设置为 0 的张量
torch.zeros((2, 3, 4))
# 创建所有元素都设置为 1 的张量
torch.ones((2, 3, 4))
# 转置
A = torch.arange(20).reshape(5, 4)
A.T
# 对称矩阵的转置等于本身
B = torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]])
B == B.T
# 指定元素类型
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
# 通过分配新内存,将A的一个副本分配给B
B = A.clone()
# 两个矩阵的按元素乘法称为Hadamard积(Hadamard product)
A * B
# 降维,所有轴向
A_sum_axis0 = A.sum()
# 降维,仅某个轴向
A_sum_axis0 = A.sum(axis=0)
# 平均值
A.mean(), A.sum() / A.numel()
A.mean(axis=0), A.sum(axis=0) / A.shape[0]
# 非降维求和。可以通过广播机制继续和相同维度的张量进行运算。
sum_A = A.sum(axis=1, keepdims=True)
# 两个矩阵的按元素乘法称为点积(Dot product)
# 点积在很多场合都很有用。 例如,给定一组由 x 向量表示的值, 和一组由 w 表示的权重。x 中的值根据权重 w 的加权和,可以表示为点积。 当权重为非负数且和为1时, 点积表示加权平均(weighted average)。
x, y, torch.dot(x, y)
# 矩阵-向量积
torch.mv(A, x)
# 矩阵-矩阵乘法
torch.mm(A, B)
# 范数(norm)
u = torch.tensor([3.0, -4.0])
torch.norm(u)
小结
- 标量、向量、矩阵和张量是线性代数中的基本数学对象。
- 向量泛化自标量,矩阵泛化自向量。
- 标量、向量、矩阵和张量分别具有零、一、二和任意数量的轴。
- 一个张量可以通过 sum 和 mean 沿指定的轴降低维度。
- 两个矩阵的按元素乘法被称为他们的 Hadamard 积。它与矩阵乘法不同。
- 在深度学习中,我们经常使用范数,如 L1 范数、L2 范数和Frobenius范数。
- 我们可以对标量、向量、矩阵和张量执行各种操作。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nz_nuaa@163.com